import books from '@/data/books.js'

const cart = {
  namespaced: true,
  state() {
    return {
      items: books  // 使用导入的books对items进行初始化
    }
  },
  mutations: {
    pushItemToCart (state, book) {
      state.items.push(book);
    },
    deleteItem (state, id){
      // 根据提交的id载荷，查找是否存在相同id的商品，返回商品的索引
      let index = state.items.findIndex(item => item.id === id);
      if(index >= 0){
        state.items.splice(index, 1);
      }
    },
    incrementItemCount(state, {id, count}){
      let item = state.items.find(item => item.id === id);
      if(item){
        item.count += count; // count为1，则加一；count为-1，则减一
      }
    }
  },
  getters: {
    cartItemPrice(state){
      return function(id){
        let item = state.items.find(item => item.id === id);
        if(item){
          return item.price * item.count;
        }
      }
    },
    cartTotalPrice(state){
      return state.items.reduce((total, item) =>{
        return total + item.price * item.count;
      }, 0);
    }
  },
  actions: {
    addItemToCart(context, book){
      let item = context.state.items.find(item => item.id === book.id);
      // 如果添加的商品已经在购物车中存在，则只增加购物车中商品的数量
      if(item){
        context.commit('incrementItemCount', book);
      }
      // 如果添加的商品是新商品，则加入到购物车中
      else{
        context.commit('pushItemToCart', book);
      }
    }
  }
}

export default cart